const request = require('../../utils/request')

Page({
  data: {
    isSubmitting: false  // 是否正在提交
  },
  
  onLoad() {
    // 检查是否有token，如果有则直接跳转到首页
    const token = wx.getStorageSync('token')
    if (token) {
      getApp().globalData.token = token
      getApp().globalData.isLogin = true
      
      // 跳转到首页
      wx.switchTab({
        url: '/pages/index/index'
      })
    }
    
    // 从全局数据获取openid
    const app = getApp()
    if (!app.globalData.openid) {
      // 如果没有openid，重新登录获取
      app.login()
    }
  },
  
  // 一键登录
  quickLogin() {
    // 防止重复提交
    if (this.data.isSubmitting) return
    
    this.setData({ isSubmitting: true })
    
    // 调用wx.login获取新的code
    wx.login({
      success: res => {
        if (res.code) {
          // 获取到code，调用一键登录接口
          this.doLogin(res.code)
        } else {
          this.setData({ isSubmitting: false })
          console.error('wx.login 失败', res.errMsg)
          wx.showToast({
            title: '登录失败，请重试',
            icon: 'none'
          })
        }
      },
      fail: err => {
        this.setData({ isSubmitting: false })
        console.error('wx.login 调用失败', err)
        wx.showToast({
          title: '登录失败，请重试',
          icon: 'none'
        })
      }
    })
  },
  
  // 使用code调用登录接口
  doLogin(code) {
    // 调用一键登录接口
    request.post('/student/login0', {
      code: code
    }, false).then(res => {
      this.setData({ isSubmitting: false })
      
      if (res.code === 0 && res.data) {
        // 登录成功
        // 保存token
        if (res.data.token) {
          wx.setStorageSync('token', res.data.token)
          getApp().globalData.token = res.data.token
          getApp().globalData.isLogin = true
          
          // 跳转到首页
          wx.switchTab({
            url: '/pages/index/index'
          })
        } else {
          wx.showToast({
            title: '登录成功，但未获取到token',
            icon: 'none'
          })
        }
      } else {
        // 登录失败
        wx.showToast({
          title: res.message || '登录失败，请稍后重试',
          icon: 'none'
        })
      }
    }).catch(err => {
      console.error('登录失败', err)
      this.setData({ isSubmitting: false })
      
      wx.showToast({
        title: '登录失败，请稍后重试',
        icon: 'none'
      })
    })
  }
}) 